package cn.graydove.bot.controller;

import cn.graydove.bot.model.entity.Image;
import cn.graydove.bot.service.ImageService;
import cn.graydove.bot.service.ViolationService;
import cn.graydove.bot.support.ApiProperties;
import cn.graydove.bot.utils.CommonUtils;
import cn.graydove.bot.utils.ShaUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@Slf4j
@RestController
public class ApiController {

//    private ApiProperties apiProperties;
//
//    private ImageService imageService;
//
//    private RobotClient client;
//
//    private ViolationService violationService;
//
//    public ApiController(ApiProperties apiProperties, ImageService imageService, RobotClient client, ViolationService violationService) {
//        this.apiProperties = apiProperties;
//        this.imageService = imageService;
//        this.client = client;
//        this.violationService = violationService;
//    }
//
//    @PostMapping("/aliyun/oss_callback")
//    public void callback(String checksum, String content) {
//        log.info("收到回调");
//        if (check(checksum, content)) {
//            Content cont = null;
//            try {
//                cont = CommonUtils.objectMapper.readValue(content, Content.class);
//                log.info("图片：{}", cont.object);
//                if (cont.freezed) {
//                    String imgName = cont.getObject();
//                    if (imgName.contains("/")) {
//                        imgName = imgName.substring(imgName.lastIndexOf('/') + 1);
//                    }
//                    Image image = imageService.findByImageName(imgName);
//
//                    delImage(image, "涉黄");
//                } else if (cont.scanResult != null && cont.scanResult.results != null) {
//                    for (var r: cont.scanResult.results) {
//                        if ("porn".equals(r.scene)) {
//                            if ("normal".equals(r.label) && r.rate > 90) {
//                                String imgName = cont.getObject();
//                                if (imgName.contains("/")) {
//                                    imgName = imgName.substring(imgName.lastIndexOf('/') + 1);
//                                }
//                                Image image = imageService.findByImageName(imgName);
//
//                                delImage(image, "内容不符");
//                            } else {
//                                log.info("忽略回调 {}概率：{}", r.label, r.rate);
//                            }
//                            break;
//                        }
//                    }
//                }
//
//            } catch (JsonProcessingException e) {
//                log.error("Json解析失败：{}", content);
//            }
//        } else {
//            log.error("非法请求checksum:{},content:{}", checksum, content);
//        }
//    }
//
//    @PostMapping("/del_image")
//    public String del(Integer id, String name, String reason) {
//        Image image = null;
//        if (id != null) {
//            image = imageService.findById(id);
//        } else if (name != null) {
//            if (name.contains("/")) {
//                name = name.substring(name.lastIndexOf('/') + 1);
//            }
//            image = imageService.findByImageName(name);
//        }
//        if (image != null && reason != null) {
//            delImage(image, reason);
//            return "OK";
//        }
//        return "ERROR";
//    }
//
//    private void delImage(Image image, String reason) {
//        if (image != null) {
//            imageService.deleteById(image.getId());
//            violationService.add(image.getUploaderQqNumber(), image.getUploadGroupNumber(), reason);
//            String msg = CommonUtils.at(image.getUploaderQqNumber()) +
//                    "您上传的ID为" + image.getId() +
//                    "的图片因" + reason + "，现已被删除。\n您的违规行为已被记录。";
//            log.warn(msg);
//            client.sendGroupMsg(image.getUploadGroupNumber(), msg);
//        }
//    }
//
//    private boolean check(String checksum, String content) {
//        String seed = apiProperties.getOss().getCallbackSeed();
//        String uid = apiProperties.getUid();
//
//        String s = ShaUtil.SHA256(uid + seed + content);
//        return StringUtils.equals(s, checksum);
//    }
//
//    @Data
//    private static class Content {
//
//        private String bucket;
//
//        private boolean freezed;
//
//        private String object;
//
//        private String region;
//
//        private ScanResult scanResult;
//
//        private boolean stock;
//
//        @Data
//        private static class ScanResult {
//            private Integer code;
//            private String taskId;
//            private String msg;
//            private String dataId;
//            private Map<String, String> extras;
//            private List<Result> results;
//
//            @Data
//            private static class Result {
//                private Map<String, String> extras;
//                private String scene;
//                private String label;
//                private String suggestion;
//                private Float rate;
//            }
//        }
//
//    }
}
